import type { HttpContext } from '@adonisjs/core/http'
import type { NextFn } from '@adonisjs/core/types/http'

/**
 * Updating the "Accept" header to always accept "application/json" response
 * from the server. This will force the internals of the framework like
 * validator errors or auth errors to return a JSON response.
 */
export default class ForceJsonResponseMiddleware {
  async handle({ response }: HttpContext, next: NextFn) {
    await next()

    const contentType = response.getHeader('Content-type')

    if (contentType) return

    response.send({
      code: response.getStatus(),
      message: 'success',
      data: response.getBody(),
    })
  }
}
